﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form4: Form
    {
        private gjpingyi gjpy;
        public Form4()
        {
            InitializeComponent();
            gjpy = new gjpingyi();
            dGVoriginalPosition.RowHeadersVisible = false;
            dGVoffsetPosition.RowHeadersVisible = false;
            dGVoriginalPosition.Rows.Add(0.0000, -10.0000);
            dGVoriginalPosition.Rows.Add(0.0000, -6.0000);
            dGVoriginalPosition.Rows.Add(0.0000, -2.0000);
            dGVoriginalPosition.Rows.Add(0.0000, 2.0000);
            dGVoriginalPosition.Rows.Add(0.0000, 6.0000);
            dGVoriginalPosition.Rows.Add(0.0000, 10.0000);
        }

        private void Form4_Load(object sender, EventArgs e)
        {
            //if (this.IsHandleCreated)
            //{
            //    // 句柄已经创建，可以安全地调用 Invoke/BeginInvoke
            //}
            //else
            //{
            //    this.HandleCreated += (s, ev) =>
            //    {
            //        // 句柄创建后可以安全地调用 Invoke/BeginInvoke
            //    };
            //}
        }
        private void UpdateOffsetPosition()
        {
           
            // 清空 dGVRotation 中的旧数据
            dGVoffsetPosition.Rows.Clear();

            // 确保行中有 θ 数据
            if (!string.IsNullOrEmpty(txtpianyiX.Text) && !string.IsNullOrEmpty(txtpianyiY.Text) && !string.IsNullOrEmpty(txtpianyiTheta.Text))
            {
                double dX = Convert.ToDouble(txtpianyiX.Text);
                double dy = Convert.ToDouble(txtpianyiY.Text);
                double theta = Convert.ToDouble(txtpianyiTheta.Text);

                // 计算所有固定点的旋转结果
                var rotatedPoint = gjpy.RotateAndTranslateFixedPoints(theta, dX, dy, clockwise: false);

                foreach (var point in rotatedPoint)
                {
                    dGVoffsetPosition.Rows.Add(point.Item1, point.Item2);
                }
            }
        }
        
        private void dGVoffsetPosition_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            UpdateOffsetPosition();
        }

        private void btnComputePosition_Click(object sender, EventArgs e)
        {
            UpdateOffsetPosition();
        }

        public void UpdateRobotPosition(string position)
        {
            tbRobotPosition.Text = position;
            Console.WriteLine("form4中的position：{0}",position);
        }

        private void btnAddData_Click(object sender, EventArgs e)
        {
            // 获取文本框中的输入
            string input = tbRobotPosition.Text.Trim();

            // 检查输入是否为空
            if (!string.IsNullOrEmpty(input))
            {
                // 尝试拆分输入的字符串
                string[] coordinates = input.Split(',');

                // 确保拆分后的数组有两个元素（x 和 y）
                if (coordinates.Length == 2)
                {
                    // 尝试将字符串转换为 double 类型
                    if (double.TryParse(coordinates[0].Trim(), out double x) && double.TryParse(coordinates[1].Trim(), out double y))
                    {
                        // 在 dGVoriginalPosition 中添加一行新数据
                        dGVoriginalPosition.Rows.Add(x, y);
                    }
                    else
                    {
                        MessageBox.Show("请输入有效的数字格式。");
                    }
                }
                else
                {
                    MessageBox.Show("请输入以逗号分隔的X和Y坐标值。");
                }
            }
            else
            {
                MessageBox.Show("输入不能为空。");
            }
        }

        private void groupBox2_Enter(object sender, EventArgs e)
        {

        }
    }
}
